//*************************************************************************\\
//***********               tdc_automata_engine.h      		***********\\
//*************************************************************************\\
//*************************************************************************\\
//*********** 		        UFPE/Cin - Greco		***********\\
//*********** 		 http://www.cin.ufpe.br/~greco 		***********\\
//***********							***********\\
//***********							***********\\
//*********** 		    By Rafael Melo Macieira		***********\\
//***********							***********\\
//***********		    E-mail: rmm2@cin.ufpe.br		***********\\
//*************************************************************************\\
//*************************************************************************\\
//**		 Automata Reference for the temporal check		 **\\
//**	   	 Automatas Configuration Class                           **\\
//*************************************************************************\\

#ifndef TDC_AUTOMATA_ENGINE_H
#define TDC_AUTOMATA_ENGINE_H

#include "tdc_automata.h"
#include "tdc_automata_drv_init.h"
#include "tdc_automata_drv_send_data_pre.h"
#include "tdc_automata_drv_setcontrast_pre.h"

class TDC_Automata_Engine {
private:
    VarList *mainVarList;
    AutomataList *mainAutomataList;
    TDC_Automata *currentAutomata;
    VarList *currentVarList;
    bool runStepNow;
    int isVarToCheck(unsigned int platformAddr);
public:
    TDC_Automata_Engine();
    void checkThisVar(unsigned int platformAddr);
    void runStep(bool access_type, unsigned int data);
};

#endif
